package com.seckill.service;

import com.seckill.model.dto.ItemDTO;

import java.util.List;

/**
 * @author lill
 * @date 2019-06-24
 */
public interface ItemService {

    /**
     * 创建商品
     *
     * @param itemDTO
     * @return
     */

    ItemDTO createItem(ItemDTO itemDTO);

    /**
     * 商品列表浏览
     *
     * @return
     */
    List<ItemDTO> listItem();

    /**
     * 商品详情
     *
     * @param id
     * @return
     */
    ItemDTO getItemById(Integer id);

    /**
     * 商品详情
     *
     * @param id
     * @return
     */
    ItemDTO getItemByIdInCache(Integer id);

    /**
     * 库存扣减
     *
     * @param itemId
     * @param amount
     * @return
     */
    boolean decreaseStock(Integer itemId, Integer amount);

    /**
     * 异步更新库存
     *
     * @param itemId
     * @param amount
     * @return
     */
    boolean asynchronousDecreaseStock(Integer itemId, Integer amount);

    /**
     * 增加redis库存
     *
     * @param itemId
     * @param amount
     */
    void increaseDecreaseStock(Integer itemId, Integer amount);

    /**
     * 商品下单后对应销量增加
     *
     * @param itemId
     * @param amount
     */
    void increaseSales(Integer itemId, Integer amount);

    /**
     * 初始化库存流水
     * @param itemId
     * @param amount
     * @return
     */
    String initStockLog(Integer itemId,Integer amount);
}
